/* 从链表中删除给定值在s到t之间（不包含s和t) 的所有元素 */

#include <iostream>
#include "headfun.h"
using namespace std;

// 删除链表中的特定元素
void del(LNode *&L, int min, int max)
{
  LNode *p = L;
  
  // 遍历链表
  while (p->next != NULL)
  {
    // 下一个结点需要删除
    if (p->next->data > min && p->next->data < max)
    {
      // 构造新链接
      LNode *u = p->next;
      p->next = u->next;
      
      // 释放内存
      free(u);
    }
    
    // 不需要删除，则继续遍历
    else
      p = p->next;
  }
}

int main()
{
  // 创建链表
  LNode *L = head_Linklist();
  
  // 删除指定元素
  del(L, 5, 10);
  
  // 遍历链表，打印信息
  LNode *q = L->next;
  while (q != NULL)
  {
    cout << q->data << " ";
    q = q->next;
  }
  return 0;
}